package dao

import (
	"fmt"

	"gitee.com/shuwenhe/shuwen/cart/model"
	"gitee.com/shuwenhe/shuwen/cart/util"
)

func AddCart(cart *model.Cart) error { // 向购物车表中插入购物车
	sql := "insert into cart(id,total_count,total_amount,user_id) values(?,?,?,?)"
	_, err := util.Db.Exec(sql, cart.CartID, cart.GetTotalCount(), cart.GetTotalAmount(), cart.UserID)
	if err != nil {
		return err
	}
	cartItems := cart.CartItems          // 获取购物车中所有购物项
	for _, cartItem := range cartItems { // 遍历得到每一个购物项
		err := AddCartItem(cartItem) // 将购物项插入到数据库中
		if err != nil {
			fmt.Println("err = ", err)
		}
	}
	return nil
}

func GetCartByUserID(userID int) (*model.Cart, error) { // 根据用户ID从数据库中查询对应的购物车
	sql := "select id,total_count,total_amount,user_id from cart where user_id = ?"
	row := util.Db.QueryRow(sql, userID)
	cart := &model.Cart{}
	err := row.Scan(&cart.CartID, &cart.TotalCount, &cart.TotalAmount, &cart.UserID)
	if err != nil {
		return nil, err
	}
	cartItems, _ := GetCartItemsByCartID(cart.CartID) // 获取当前购物车中所有的购物项
	cart.CartItems = cartItems                        // 将所有的购物项设置到购物车中
	return cart, nil
}

func UpdateCart(cart *model.Cart) error { // 更新购物车中商品总数量和总金额
	sql := "update cart set total_count = ?, total_amount = ? where id = ?"
	_, err := util.Db.Exec(sql, cart.TotalCount, cart.TotalAmount, cart.CartID)
	if err != nil {
		return err
	}
	return nil
}
